Infinite Recursion (IR)

Description:

IR detects situations where infinite recursion occurs during program execution.

Incorrect:

  Buffer = class;
  List = class
    private
      buf:Buffer;

    public
      function size():integer;
  end;
  Buffer = class
    private
      list:List;

    public
      constructor Create(list:List);
      function size():integer;
  end;
...

function List.size():Integer;
begin
  result := buf.size();
end;

constructor Buffer.Create(list:List);
begin
  inherited Create;
  self.list := list;
end;

function Buffer.size():Integer;
begin
  result := list.size();
end;